# -*-coding:utf-8-*-
import os
import shutil
import pathlib

base_dir = r'e:\文档'

# 遍历目录和文件
# 方法一,listdir返回的是文件名字符串列表(不带路径)
listdir = os.listdir(base_dir)
for f in listdir:
    print(os.path.join(base_dir, f))
# 方法二,scandir返回的是os.DirEntry迭代器.DirEntry有is_file(),is_dir(),path(完整路径),name属性
listdir2 = os.scandir(base_dir)
for obj in listdir2:
    print(obj.path, obj.is_file())

# 递归遍历目录和文件
listdirs = os.walk(base_dir)
for root, dirs, files in listdirs:
    for d in dirs:
        print('文件夹', os.path.join(root, d))
    for f in files:
        print('文件', os.path.join(root, f))

# 重命名文件及目录
# os.rename('1.xlsx', '2.xlsx')

# 拼接路径
path = os.path.join(base_dir, '1.txt')

# 判断是否为文件或者目录
print(os.path.isfile('代开品目代码.xlsx'))
print(os.path.isdir('代开品目代码.xlsx'))

# 复制文件, shutil会以os设置的路径为当前路径
# shutil.copy('1.xlsx', '2.xlsx')

# Path.rglob(文件过滤条件) 递归遍历文件,返回Path迭代器
# Path.glob(文件过滤条件)  遍历文件,返回Path迭代器
# Path.iterdir() 遍历文件,返回Path迭代器
p = pathlib.Path(base_dir)
all_files = p.rglob('*')
files = filter(lambda x: x.is_file(), all_files)
for f in files:
    print(f)  # e:\文档\5月报销单\差旅费报销单5月.xlsx
    if f.name == 'a':
        f.rename(f.with_suffix('.txt'))